
import os
import log


def get_child_folder_names(folders):
    """
    获取子文件夹名称
    Args:
        folders: 子文件夹路径列表
    Returns:
        list: 子文件夹名称列表
    """
    child_folder_names = []
    for folder in folders:
        child_folder_names.append(os.path.basename(folder))
    return child_folder_names

def get_child_folder(folder):
    """获取文件夹下所有子文件夹的绝对路径
    Args:
        folder: 根文件夹路径
    Returns:
        list: 包含所有子文件夹绝对路径的列表
    """
    child_folders = []
    try:
        # 遍历文件夹内容
        for item in os.listdir(folder):
            item_path = os.path.join(folder, item)
            # 只保留子文件夹，排除文件
            if os.path.isdir(item_path):
                child_folders.append(item_path)
        # 按名称排序
        child_folders.sort()
    except Exception as e:
        log.Error(f"获取子文件夹失败: {str(e)}")
        return None
    return child_folders

def get_des_list(folders):
    """
    获取每个子文件夹中的des.txt文件内容
    Args:
        folders: 子文件夹路径列表
    Returns:
        list: 包含每个子文件夹中des.txt文件内容的列表
    """
    des_list = []
    
    for folder in folders:
        des_path = os.path.join(folder, 'des.txt')
        if os.path.exists(des_path):
            try:
                with open(des_path, 'r', encoding='utf-8') as f:
                    des_list.append(f.read().strip())
            except Exception as e:
                log.Error(f"读取 {des_path} 失败: {str(e)}")
                des_list.append('')  # 读取失败时添加空字符串
        else:
            des_list.append('')  # 文件不存在时添加空字符串
    
    return des_list


def get_img_list(folders :list):
    """获取每个子文件夹中的图片路径
    Args:
        folders: 子文件夹路径列表
    Returns:
        list: 嵌套列表，每个子列表包含一个子文件夹中的所有图片路径
    """
    img_list = []
    supported_ext = ('.png', '.jpg', '.jpeg', '.gif', '.bmp')  # 支持的图片格式
    
    for folder in folders:
        sub_imgs = []
        file :str = ""
        try:
            # 遍历当前子文件夹中的文件
            for file in os.listdir(folder):
                file_path = os.path.join(folder, file)
                # 检查是否是图片文件
                if file.lower().endswith(supported_ext):
                    sub_imgs.append(file_path)
            
            # 按文件名排序图片
            sub_imgs.sort()
            img_list.append(sub_imgs)
            
        except Exception as e:
            log.Error(f"读取文件夹 {folder} 中的图片失败: {str(e)}")
            img_list.append([])  # 添加空列表表示读取失败
    
    return img_list

